1. Field of the Invention
The present invention relates to an apparatus and method for performing data scrubbing on a memory device.
2. Description of the Prior Art
It is known in memory devices for errors to accumulate over time. For example, bits of data in the memory device may be flipped as a result of environmental effects such as: background radiation, cosmic rays, neutron strikes, and/or alpha particle emissions. That is, if a bit stores the logical value ‘1’, this could be flipped to the logical value ‘0’, and vice versa.
A known way of responding to such errors is to use error correction techniques. For example, the inclusion of error correction codes (ECCs) can be used to add redundant information that can be used to detect and correct an error in the memory. Such a technique may be used in, for example, DRAM memory.
However, error correction techniques are limited in their ability to detect or correct errors in data stored in memory. In particular, the number of errors that can be detected or corrected is dependent on the amount of redundant data (for example the number of ECC codes) stored in addition to the data. Consequently, it is necessary to increase the amount of redundant data stored if it is desired to increase the number of errors that can be corrected in the data stored in memory. Storing this additional redundant data requires additional storage space, which in turn leads to an increased physical size and power consumption of the memory device. If the number of errors in the data of the memory device is too large, i.e. if the error correction technique does not have sufficient redundant data in order to be able to recover the stored data, then that portion of data in the memory device is corrupt and cannot be recovered, i.e. the data is lost.
A known technique for alleviating this problem is to use what is known as scrubbing to seek to avoid too many errors accumulating. Scrubbing involves the process of sending a read request to an area of memory to read the data stored in that area, checking that data to determine if there are any errors, correcting any errors in the data using any error correcting techniques that are available, and writing back the corrected data to that area of memory. If scrubbing is performed frequently enough, this can avoid the problem of accumulating errors beyond the point at which error correction techniques can be used to recover the data.
However, scrubbing has an impact on performance. In particular, since scrubbing involves making repeated requests for data in the memory device purely to perform scrubbing of that data, scrubbing uses both bandwidth of the memory device and increases power consumption, and therefore has an impact on the performance of the system as well as its power consumption.
In RAID memory devices, it is known to use a controller to perform scrubbing by periodically reading all the disks in an array, and checking for errors.
It would be desirable to provide a technique which performs scrubbing in such a way that the performance cost and/or the power consumption necessary to achieve a particular level of data reliability by performing the scrubbing is reduced.